﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;

namespace Sispe.Repository
{
    public class MenuRepository:MasterRepository,IMenuRepository
    {

        /*metodo para mostrar las pestañas generales del menu*/
        public List<MENU> GetAllMenu()
        {
            var query = from m in context.MENUs
                        where m.Tag == 1000 || m.Tag == 2000 || m.Tag == 3000 || m.Tag == 4000 || m.Tag == 5000 || m.Tag == 5050 || m.Tag == 6000 ||
                                  m.Tag == 7000 || m.Tag == 8000 || m.Tag == 8050 || m.Tag == 9000 || m.Tag == 9050 || m.Tag == 10000
                        select m;
            return query.ToList();
        }

        /*metodo para avanzar a las sub pestañas del menu general*/
        public List<MENU> GetAllFromMenuByTag(int tag)
        {
            if (tag == 1000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 1005 || m.Tag == 1010 || m.Tag == 1015 || m.Tag == 1025 || m.Tag == 1030
                            select m;
                return query.ToList();
            }
            else if (tag == 2000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2005 || m.Tag == 2010 || m.Tag == 2015 || m.Tag == 2020 || m.Tag == 2025 || m.Tag == 2030 || m.Tag == 2035 || m.Tag == 2040 ||
                            m.Tag == 2045 || m.Tag == 2050 || m.Tag == 2060 || m.Tag == 2065 || m.Tag == 2070
                            select m;
                return query.ToList();
            }
            else if (tag == 3000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3005 || m.Tag == 3010 || m.Tag == 3015 || m.Tag == 3020 || m.Tag == 3025 || m.Tag == 3030 || m.Tag == 3035 || m.Tag == 3040 ||
                            m.Tag == 3045 || m.Tag == 3050 || m.Tag == 3055 || m.Tag == 3060 || m.Tag == 3065 || m.Tag == 3070
                            select m;
                return query.ToList();
            }
            else if (tag == 4000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 4005 || m.Tag == 4020
                            select m;
                return query.ToList();
            }
            else if (tag == 5000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 5005
                            select m;
                return query.ToList();
            }
            else if (tag == 5050)
            {
                var query = from m in context.MENUs
                            where m.Tag == 5055
                            select m;
                return query.ToList();
            }
            else if (tag == 6000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 6005 || m.Tag == 6010 || m.Tag == 6015
                            select m;
                return query.ToList();
            }
            else if (tag == 7000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 7005 || m.Tag == 7015 || m.Tag == 7020
                            select m;
                return query.ToList();
            }
            else if (tag == 8000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 8005
                            select m;
                return query.ToList();
            }
            else if (tag == 8050)
            {
                var query = from m in context.MENUs
                            where m.Tag == 8055
                            select m;
                return query.ToList();
            }
            else if (tag == 9000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 9005 || m.Tag == 9010
                            select m;
                return query.ToList();
            }
            else if (tag == 9050)
            {
                var query = from m in context.MENUs
                            where m.Tag == 9055 || m.Tag == 9060
                            select m;
                return query.ToList();
            }
            else if (tag == 10000)
            {
                var query = from m in context.MENUs
                            where m.Tag == 10005 || m.Tag == 10010
                            select m;
                return query.ToList();
            }
            else
            {
                var query = from m in context.MENUs
                            where m.Tag == null
                            select m;
                return query.ToList();
            }
        }

        /*metodo para avanzar a los detalles de cada pestaña del menu*/
        public List<MENU> GetAllFromMenuByMantenimientoByTag(int tag)
        {
            if (tag == 1005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 1006 || m.Tag == 1007 || m.Tag == 1008 || m.Tag == 1009
                            select m;
                return query.ToList();
            }
            else if (tag == 1010)
            {
                var query = from m in context.MENUs
                            where m.Tag == 1011 || m.Tag == 1012 || m.Tag == 1013 || m.Tag == 1014
                            select m;
                return query.ToList();
            }
            else if (tag == 1015)
            {
                var query = from m in context.MENUs
                            where m.Tag == 1016 || m.Tag == 1017 || m.Tag == 1018 || m.Tag == 1019
                            select m;
                return query.ToList();
            }
            else if (tag == 1025)
            {
                var query = from m in context.MENUs
                            where m.Tag == 1026 || m.Tag == 1027 || m.Tag == 1028 || m.Tag == 1029
                            select m;
                return query.ToList();
            }
            else if (tag == 1030)
            {
                var query = from m in context.MENUs
                            where m.Tag == 1031 || m.Tag == 1032 || m.Tag == 1033 || m.Tag == 1034
                            select m;
                return query.ToList();
            }
            else if (tag == 2005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2006 || m.Tag == 2007 || m.Tag == 2008 || m.Tag == 2009
                            select m;
                return query.ToList();
            }
            else if (tag == 2010)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2011 || m.Tag == 2012 || m.Tag == 2013 || m.Tag == 2014
                            select m;
                return query.ToList();
            }
            else if (tag == 2015)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2016 || m.Tag == 2017 || m.Tag == 2018 || m.Tag == 2019
                            select m;
                return query.ToList();
            }
            else if (tag == 2020)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2021 || m.Tag == 2022 || m.Tag == 2023 || m.Tag == 2024
                            select m;
                return query.ToList();
            }
            else if (tag == 2025)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2026 || m.Tag == 2027 || m.Tag == 2028 || m.Tag == 2029
                            select m;
                return query.ToList();
            }
            else if (tag == 2030)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2031 || m.Tag == 2032 || m.Tag == 2033 || m.Tag == 2034
                            select m;
                return query.ToList();
            }
            else if (tag == 2035)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2036 || m.Tag == 2037 || m.Tag == 2038 || m.Tag == 2039
                            select m;
                return query.ToList();
            }
            else if (tag == 2040)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2041 || m.Tag == 2042 || m.Tag == 2043 || m.Tag == 2044
                            select m;
                return query.ToList();
            }
            else if (tag == 2045)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2046 || m.Tag == 2047 || m.Tag == 2048 || m.Tag == 2049
                            select m;
                return query.ToList();
            }
            else if (tag == 2050)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2051 || m.Tag == 2052 || m.Tag == 2053 || m.Tag == 2054
                            select m;
                return query.ToList();
            }
            else if (tag == 2060)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2061 || m.Tag == 2062 || m.Tag == 2063 || m.Tag == 2064
                            select m;
                return query.ToList();
            }
            else if (tag == 2065)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2066 || m.Tag == 2067 || m.Tag == 2068 || m.Tag == 2069
                            select m;
                return query.ToList();
            }
            else if (tag == 2070)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2071 || m.Tag == 2072 || m.Tag == 2073 || m.Tag == 2074
                            select m;
                return query.ToList();
            }
            else if (tag == 3005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3006 || m.Tag == 3007 || m.Tag == 3008 || m.Tag == 3009
                            select m;
                return query.ToList();
            }
            else if (tag == 3005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3006 || m.Tag == 3007 || m.Tag == 3008 || m.Tag == 3009
                            select m;
                return query.ToList();
            }
            else if (tag == 3010)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3011 || m.Tag == 3012 || m.Tag == 3013 || m.Tag == 3014
                            select m;
                return query.ToList();
            }
            else if (tag == 3015)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3016 || m.Tag == 3017 || m.Tag == 3018 || m.Tag == 3019
                            select m;
                return query.ToList();
            }
            else if (tag == 3020)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3021 || m.Tag == 3022 || m.Tag == 3023 || m.Tag == 3024
                            select m;
                return query.ToList();
            }
            else if (tag == 3025)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3026 || m.Tag == 3027 || m.Tag == 3028 || m.Tag == 3029
                            select m;
                return query.ToList();
            }
            else if (tag == 3030)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3031 || m.Tag == 3032 || m.Tag == 3033 || m.Tag == 3034
                            select m;
                return query.ToList();
            }
            else if (tag == 3035)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3036 || m.Tag == 3037 || m.Tag == 3038 || m.Tag == 3039
                            select m;
                return query.ToList();
            }
            else if (tag == 3040)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3041 || m.Tag == 3042 || m.Tag == 3043 || m.Tag == 3044
                            select m;
                return query.ToList();
            }
            else if (tag == 3045)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3046 || m.Tag == 3047 || m.Tag == 3048 || m.Tag == 3049
                            select m;
                return query.ToList();
            }
            else if (tag == 3050)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3051 || m.Tag == 3052 || m.Tag == 3053 || m.Tag == 3054
                            select m;
                return query.ToList();
            }
            else if (tag == 3055)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3056 || m.Tag == 3057 || m.Tag == 3058 || m.Tag == 3059
                            select m;
                return query.ToList();
            }
            else if (tag == 3060)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3061 || m.Tag == 3062 || m.Tag == 3063 || m.Tag == 3064
                            select m;
                return query.ToList();
            }
            else if (tag == 3065)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3066 || m.Tag == 3067 || m.Tag == 3068 || m.Tag == 3069
                            select m;
                return query.ToList();
            }
            else if (tag == 3070)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3071 || m.Tag == 3072 || m.Tag == 3073 || m.Tag == 3074
                            select m;
                return query.ToList();
            }
            else if (tag == 4005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 4006 || m.Tag == 4007 || m.Tag == 4008 || m.Tag == 4009 || m.Tag == 4010 || m.Tag == 4011 ||
                                       m.Tag == 4012 || m.Tag == 4013 || m.Tag == 4014 || m.Tag == 4015 || m.Tag == 4016
                            select m;
                return query.ToList();
            }
            else if (tag == 4020)
            {
                var query = from m in context.MENUs
                            where m.Tag == 4021 || m.Tag == 4022 || m.Tag == 4023 || m.Tag == 4024
                            select m;
                return query.ToList();
            }
            else if (tag == 5005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 5006 || m.Tag == 5007 || m.Tag == 5008 || m.Tag == 5009
                            select m;
                return query.ToList();
            }
            else if (tag == 5055)
            {
                var query = from m in context.MENUs
                            where m.Tag == 5056
                            select m;
                return query.ToList();
            }
            else if (tag == 6005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 6006 || m.Tag == 6007 || m.Tag == 6008 || m.Tag == 6009
                            select m;
                return query.ToList();
            }
            else if (tag == 6010)
            {
                var query = from m in context.MENUs
                            where m.Tag == 6011 || m.Tag == 6012 || m.Tag == 6013 || m.Tag == 6014
                            select m;
                return query.ToList();
            }
            else if (tag == 6015)
            {
                var query = from m in context.MENUs
                            where m.Tag == 6016 || m.Tag == 6017 || m.Tag == 6018 || m.Tag == 6019
                            select m;
                return query.ToList();
            }
            else if (tag == 7005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 7006 || m.Tag == 7007 || m.Tag == 7008 || m.Tag == 7009 || m.Tag == 7010 || m.Tag == 7011 || m.Tag == 7012
                            select m;
                return query.ToList();
            }
            else if (tag == 7015)
            {
                var query = from m in context.MENUs
                            where m.Tag == 7016
                            select m;
                return query.ToList();
            }
            else if (tag == 7020)
            {
                var query = from m in context.MENUs
                            where m.Tag == 7021
                            select m;
                return query.ToList();
            }
            else if (tag == 8005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 8006
                            select m;
                return query.ToList();
            }
            else if (tag == 8055)
            {
                var query = from m in context.MENUs
                            where m.Tag == 8056
                            select m;
                return query.ToList();
            }
            else if (tag == 9005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 9006 || m.Tag == 9007 || m.Tag == 9008 || m.Tag == 9009
                            select m;
                return query.ToList();
            }
            else if (tag == 9010)
            {
                var query = from m in context.MENUs
                            where m.Tag == 9011 || m.Tag == 9012 || m.Tag == 9013 || m.Tag == 9014
                            select m;
                return query.ToList();
            }
            else if (tag == 9055)
            {
                var query = from m in context.MENUs
                            where m.Tag == 9056 || m.Tag == 9057 || m.Tag == 9058 || m.Tag == 9059
                            select m;
                return query.ToList();
            }
            else if (tag == 9060)
            {
                var query = from m in context.MENUs
                            where m.Tag == 9061 || m.Tag == 9062 || m.Tag == 9063 || m.Tag == 9064
                            select m;
                return query.ToList();
            }
            else if (tag == 10005)
            {
                var query = from m in context.MENUs
                            where m.Tag == 10006 || m.Tag == 10007 || m.Tag == 10008 || m.Tag == 10009
                            select m;
                return query.ToList();
            }
            else if (tag == 10010)
            {
                var query = from m in context.MENUs
                            where m.Tag == 10011 || m.Tag == 10012 || m.Tag == 10013 || m.Tag == 10014
                            select m;
                return query.ToList();
            }
            else
            {
                var query = from m in context.MENUs
                            where m.Tag == null
                            select m;
                return query.ToList();
            }
        }

        /*metodo para retroceder en la buskeda del menu*/
        public List<MENU> GetAllFromMenuByMantenimientoByTagByReturn(int tag)
        {
            if (tag == 1006 || tag == 1007 || tag == 1008 || tag == 1009 || tag == 1011 || tag == 1012 || tag == 1013 || tag == 1014 ||
               tag == 1016 || tag == 1017 || tag == 1018 || tag == 1019 ||
               tag == 1026 || tag == 1027 || tag == 1028 || tag == 1029 || tag == 1031 || tag == 1032 || tag == 1033 || tag == 1034)
            {
                var query = from m in context.MENUs
                            where m.Tag == 1005 || m.Tag == 1010 || m.Tag == 1015 || m.Tag == 1025 || m.Tag == 1030 || m.Tag == 1035
                            select m;
                return query.ToList();
            }

            else if (tag == 2006 || tag == 2007 || tag == 2008 || tag == 2009 || tag == 2011 || tag == 2012 || tag == 2013 || tag == 2014 ||
               tag == 2016 || tag == 2017 || tag == 2018 || tag == 2019 || tag == 2021 || tag == 2022 || tag == 2023 || tag == 2024 ||
               tag == 2026 || tag == 2027 || tag == 2028 || tag == 2029 || tag == 2031 || tag == 2032 || tag == 2033 || tag == 2034 ||
               tag == 2036 || tag == 2037 || tag == 2038 || tag == 2039 || tag == 2041 || tag == 2042 || tag == 2043 || tag == 2044 ||
               tag == 2046 || tag == 2047 || tag == 2048 || tag == 2049 || tag == 2051 || tag == 2052 || tag == 2053 || tag == 2054 ||
               tag == 2061 || tag == 2062 || tag == 2063 || tag == 2064 ||
               tag == 2066 || tag == 2067 || tag == 2068 || tag == 2069 || tag == 2071 || tag == 2072 || tag == 2073 || tag == 2074)
            {
                var query = from m in context.MENUs
                            where m.Tag == 2005 || m.Tag == 2010 || m.Tag == 2015 || m.Tag == 2020 || m.Tag == 2025 || m.Tag == 2030 || m.Tag == 2035 ||
                                      m.Tag == 2040 || m.Tag == 2045 || m.Tag == 2050 || m.Tag == 2055 || m.Tag == 2060 || m.Tag == 2065 || m.Tag == 2070
                            select m;
                return query.ToList();
            }

            else if (tag == 3006 || tag == 3007 || tag == 3008 || tag == 3009 || tag == 3011 || tag == 3012 || tag == 3013 || tag == 3014 ||
               tag == 3016 || tag == 3017 || tag == 3018 || tag == 3019 || tag == 3021 || tag == 3022 || tag == 3023 || tag == 3024 ||
               tag == 3026 || tag == 3027 || tag == 3028 || tag == 3029 || tag == 3031 || tag == 3032 || tag == 3033 || tag == 3034 ||
               tag == 3036 || tag == 3037 || tag == 3038 || tag == 3039 || tag == 3041 || tag == 3042 || tag == 3043 || tag == 3044 ||
               tag == 3046 || tag == 3047 || tag == 3048 || tag == 3049 || tag == 3051 || tag == 3052 || tag == 3053 || tag == 3054 ||
               tag == 3056 || tag == 3057 || tag == 3058 || tag == 3059 || tag == 3061 || tag == 3062 || tag == 3063 || tag == 3064 ||
               tag == 3066 || tag == 3067 || tag == 3068 || tag == 3069 || tag == 3071 || tag == 3072 || tag == 3073 || tag == 3074)
            {
                var query = from m in context.MENUs
                            where m.Tag == 3005 || m.Tag == 3010 || m.Tag == 3015 || m.Tag == 3020 || m.Tag == 3025 || m.Tag == 3030 || m.Tag == 3035 ||
                                      m.Tag == 3040 || m.Tag == 3045 || m.Tag == 3050 || m.Tag == 3055 || m.Tag == 3060 || m.Tag == 3065 || m.Tag == 3070
                            select m;
                return query.ToList();
            }

            else if (tag == 4006 || tag == 4007 || tag == 4008 || tag == 4009 || tag == 4010 || tag == 4011 || tag == 4012 || tag == 4013 || tag == 4014 ||
               tag == 4015 || tag == 4016  || tag == 4021|| tag == 4022 || tag == 4023 || tag == 4024)
            {
                var query = from m in context.MENUs
                            where m.Tag == 4005 || m.Tag == 4020
                            select m;
                return query.ToList();
            }

            else if (tag == 5006 || tag == 5007 || tag == 5008 || tag == 5009)
            {
                var query = from m in context.MENUs
                            where m.Tag == 5005
                            select m;
                return query.ToList();
            }
            else if (tag == 5056)
            {
                var query = from m in context.MENUs
                            where m.Tag == 5055
                            select m;
                return query.ToList();
            }
            else if (tag == 6006 || tag == 6007 || tag == 6008 || tag == 6009 || tag == 6011 || tag == 6012 || tag == 6013 || tag == 6014 || tag == 6016 || tag == 6017 || tag == 6018 || tag == 6019)
            {
                var query = from m in context.MENUs
                            where m.Tag == 6005 || m.Tag == 6010 || m.Tag == 6015
                            select m;
                return query.ToList();
            }

            else if (tag == 7006 || tag == 7007 || tag == 7008 || tag == 7009 || tag == 7010 || tag == 7011 || tag == 7012 || tag == 7016 || tag == 7021)
            {
                var query = from m in context.MENUs
                            where m.Tag == 7005 || m.Tag == 7015 ||  m.Tag == 7020
                            select m;
                return query.ToList();
            }

            else if (tag == 8006)
            {
                var query = from m in context.MENUs
                            where m.Tag == 8005
                            select m;
                return query.ToList();
            }
            else if (tag == 8056)
            {
                var query = from m in context.MENUs
                            where m.Tag == 8055
                            select m;
                return query.ToList();
            }

            else if (tag == 9006 || tag == 9007 || tag == 9008 || tag == 9009 || tag == 9011 || tag == 9012 || tag == 9013 ||
               tag == 9014 || tag == 9056 || tag == 9057 || tag == 9058 || tag == 9059 || tag == 9061 || tag == 9062 || tag == 9063 || tag == 9064)
            {
                var query = from m in context.MENUs
                            where m.Tag == 9005 || m.Tag == 9010 || m.Tag == 9055 || m.Tag == 9060
                            select m;
                return query.ToList();
            }
            else if (tag == 10006 || tag == 10007 || tag == 10008 || tag == 10009 || tag == 10011 || tag == 10012 || tag == 10013 || tag == 10014)
            {
                var query = from m in context.MENUs
                            where m.Tag == 10005 || m.Tag == 10010
                            select m;
                return query.ToList();
            }
            else if(tag>=1005||tag<=1035||tag>=2005||tag<=2070||tag>=3005||tag<=3070||tag>=4005||tag<=4020||tag>=5005||tag<=5010||tag>=5055||tag<=5060||
                      tag>=6005||tag<=6010||tag>=7005||tag<=7020||tag>=8005||tag<=8010||tag>=8055||tag<=8060||tag>=9005||tag<=9010||tag>=9055||tag<=9070 ||
                      tag>=10005 || tag<=10050)
            {
                var query = from m in context.MENUs
                            where m.Tag ==1000 || m.Tag == 2000 || m.Tag ==3000 || m.Tag == 4000 || m.Tag == 5000 || m.Tag == 5050 || m.Tag == 6000 || m.Tag == 7000 ||
                            m.Tag == 8000 || m.Tag == 8050 || m.Tag == 9000 || m.Tag == 9050 || m.Tag == 10000
                            select m;
                return query.ToList();
            }
            else
            {
                var query = from m in context.MENUs
                            where m.Tag == null
                            select m;
                return query.ToList();
            }
        }
    }
}
